package model;

import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;


public class CUT {
	private static final ConstructorDeclared[] NO_CONSTRUCTORS = new ConstructorDeclared[0];
	private static final MethodDeclared[] NO_METHODS = new MethodDeclared[0];

	private MethodDeclared[] methods = NO_METHODS;
	private ConstructorDeclared[] constructors = NO_CONSTRUCTORS;
	private Map<Class<?>,List<Field>> constantsList= new LinkedHashMap<Class<?>, List<Field>>();
	private Class<?> clazz;
	public CUT(Class<?> clazz,ConstructorDeclared[] constructors,MethodDeclared[] methods){
		this.clazz=clazz;
		this.methods = methods;
		this.constructors = constructors;
	}
	  public static CUT getConstructor(Class<?> clazz,ConstructorDeclared[] constructors,MethodDeclared[] methodToTest) {
		    return new CUT( clazz,constructors,methodToTest);
		  }
	  public static CUT getConstructor(Class<?> clazz,MethodDeclared[] methodToTest) {
		    return new CUT( clazz,NO_CONSTRUCTORS,methodToTest);
		  }
		void setConstants(Map<Class<?>,List<Field>> constantsList) {
			this.constantsList = constantsList;
		}
		public Class<?> getClazz(){
			return this.clazz;
		}
		public Map<Class<?>,List<Field>>  getConstants() {
			return constantsList;
		}
		public ConstructorDeclared[] getConstructors() {
			return constructors;
		}
		public MethodDeclared[] getMethods() {
			return methods;
		}

}
